<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once APPPATH2 . 'libraries/MY_Front_Controller.php';

/**
 * 登陆控制器
 * 
 * Enter description here ...
 * @author Administrator
 *
 */
class Login extends MY_Front_Controller 
{
    public $form_password =''; //为了表单校验
    
    /**
     * 登陆首页
     * 
     * 作为防止爬虫抓取的策略，目前不打算用post，所以这样
     * 首页链接href="/login" onclick=""
     * 
     * 这个页面非常复杂。
     * 1、假如用户处于已登陆状态，则自动跳到首页
     * 2、假如未登陆，
     *    当前的请求是get并带有fromindex的且在15分钟（因为js得到的客户端电脑时间有误差）之内，
     *       当天的ip没有注册过帐号，则
     *          清除2天以前的test帐号，并且自动注册，然后显示
     *       当天注册过，显示
     *          “您的ip已在今天自动注册过测试帐号，请登陆，注册”   
     *       
     *    未登陆的其他情况，
     *       显示正常的登陆get和post不同。
     * 
     * Enter description here ...
     */
    public function index($fromindex='', $fromindex_value=0)
    {
        $data = array('global_nav' => 'login/index');
        $data['info'] ='';
        $data['username'] ='';
        
        $fromindex_value = intval($fromindex_value);
        
        if ($_SESSION['islogin']) {
            redirect("first");
            return;
        }
        
        
        if (Sys::ispost()) {
            $this->form_password  = trim($_POST['password']);//暂存
        }
        
        // 以下全部是未登陆的情况
        
        //这是点击/login/index/fromindex/123的情况
        if ($fromindex =='fromindex' && (abs(time() - $fromindex_value) < 15 * 60) && $this->sys->isget() ) {
            if ($row = $this->memberlib->has_today_register($_SERVER['REMOTE_ADDR'])) {//已注册过
                $data['info'] ='您的ip当天已注册过<span class="class_red">测试帐号</span>，请登陆<br />
                帐号：'. $row->username .'<br />
               密码： '. $row->real_password .'          
                
                ';
                $data['userinfo'] = $row;
            } else { //未注册过
                //自动注册
                $this->load->model('Member');
                $this->memberlib->clear();//自动清除
                $this->Member->insert_auto_register();
                //
                $data['username'] = $this->Member->username;
                $data['password'] = $this->Member->real_password;
               
            }
            $this->load->view('login/index', $data);
            return;
            
        } else {//这是用户点击/login进入的普通情况
            $this->form_validation->set_rules('username', '用户名', 
                ' trim |required|min_length[2]|max_length[20]|callback_username_admin|callback_username_exists');
            $this->form_validation->set_rules('password', '密码', ' trim |required');
            $this->form_validation->set_rules('autologin', '自动登陆', ' intval |callback_autologin');
            
            if ($this->form_validation->run() == FALSE) { //估计这里自动做post判断了,get或post失败到这里
                 $this->load->view('login/index', $data);
                 $this->memberlib->set_session_for_name();
             //    $this->log4php->debug($_SESSION);
//                 s('错误');
            } else {                                       //成功到这里
                // $this->log4php->debug(site_url("first"));
                $this->memberlib->set_session_for_name(trim($_POST['username']));
                $autologin = intval($this->input->post('autologin'));
                $expire = 365 * 24 * 3600;
                $cookie = array(
                    'name'   => 'autologin',
                    'value'  => $autologin,
                    'expire' => $expire ,
                    'path'   => '/',
                ); 
//                s('成');
                $this->input->set_cookie($cookie);
                
                if ($autologin) {
                
                    $cookie = array(
                        'name'   => 'username',
                        'value'  => $this->encrypt->encode($this->input->post('username')),
                        'expire' => $expire,
                        'path'   => '/',
                    ); 
                    $this->input->set_cookie($cookie);
                    $cookie = array(
                        'name'   => 'password',
                        'value'  => sha1(trim($this->input->post('password'))),
                        'expire' => 365 * 24 * 3600 ,
                        'path'   => '/',
                    ); 
                    $this->input->set_cookie($cookie);
                }
                redirect("first");
            }
        }
        
    }
    
    /**
     * 用户退出登陆
     * Enter description here ...
     */
    public function out()
    {
        $this->memberlib->set_session_out();
        redirect('first');
        
    }
    
    /**
     * validator
     * 名称必须不能是admin
     * 
     * @param $str
     */
    public function username_admin($str)
    {
        $result = $this->validator_str->username_admin($str);
        if ($result) {
            $this->form_validation->set_message('username_admin', $result);
            return false;
        }
        return true;
    }
    
    public function username_exists($username)
    {
        $result = $this->validator_str->username_exists($username, $this->form_password);
        if ($result) {
            $this->form_validation->set_message('username_exists', $result);
            return false;
        }
        return true;
    }

    public function autologin($autologin)
    {
        
        
        return true;
    }
    
}


